package com.foreknow.demo17;

import java.io.*;
import java.util.Iterator;
import java.util.List;

/**
 * 功能类
 */
public class Manager {
    /**
     * 向文件中写数据
     * 用什么流? 是输入流还是输出流? 是字符流还是字节流
     *  输出流 FileWriter节点流
     *  处理流
     * @param list
     */
    public void writeFile(List<Student> list){
        //1.创建流对象
        //目标文件
        FileWriter fw = null;//节点流
        BufferedWriter bw = null;
        try {
            fw= new FileWriter("Student.txt");
            bw = new BufferedWriter(fw);
            Iterator<Student> it = list.iterator();
            while (it.hasNext()){
                Student student =it.next();
               String str = student.getName()+student.getId()+student.getAge()+student.getNumber()+student.getSchool();
                //2.1每遍历一次List对象就会从中获取到一个学生对象Student

                //2.2获取当前学生Student的信息(是一个字符串:学号 姓名-------)
                //2.3将这个字符串写到目标文件(Student.txt)
                bw.write(str);

                //2.4换行
                bw.newLine();
            }
            //关闭资源
            bw.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    /**
     * 读取文件中的数据
     * 思考：
     * 1. 返回值类型和参数
     * 2. 什么流？是输入流还是输出流？是用字符流还是字节流？
     * 3. FileReader 节点流
     * 4. BufferedReader 处理流
     * 5. 方法里写什么？如何实现这个方法?
     */
//    public List<Student> readFile(String fileName) {
//        //1. 创建输入流对象
//        try {
//            FileReader fr = new FileReader(fileName); //节点流
//            //目标文件
//            // 创建一个处理流BufferedReader来增强FileReader
//            java.io.BufferedReader br = new java.io.BufferedReader(fr);
////            BufferedWriter bw = new BufferedWriter(fw);
//            //读取源文件中的一行数据
//            String str = br.readLine();
//            while (str!=null) {
//                //将读取到的一行写到目标文件中
//                bw.write(str);
//                //换行
//                bw.newLine();
//                //读取下一行
//                str = br.readLine();
//            }
//            //释放资源
//            br.close();
//            bw.close();
//        } catch (FileNotFoundException e) {
//            e.printStackTrace();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }

        //2. 读取文件(student.txt)中的一行数据  1001 asdf 12 daf 1212121------理解为对象，但是readLine()返回的是字符串
        //   如何将字符串转换成Student对象?
        //   1. 先将这个字符串拆分  通过String中的方法来拆分split：String[]
//                String[] strs = a.split(" ");
//                for(int i = 0;i<strs.length;i++){
//                    System.out.println(strs[i]);
        //        }
        //   2. 再拆分之后的值保存到Student对象中：创建对象然后将拆分之后数据中的元素赋值给Student对象的属性
        //3. 将对象保存到List集合中
        //4. 循环读取文件中的数据
        //5. 返回集合
//        return null;
//    }

}
